In [69]:
from keras.preprocessing.image import ImageDataGenerator
In [70]:
from keras import layers, models, optimizers
In [71]:
dataset_dir = './dataset'
In [72]:
import os
In [73]:
train_dir = os.path.join(dataset_dir, 'train')
In [74]:
train_gen = ImageDataGenerator(
rescale = 1./255,
rotation_range = 40,
zoom_range = 0.2,
shear_range = 0.2,
height_shift_range = 0.2,
width_shift_range = 0.2,
fill_mode = 'nearest',
)
In [75]:
train_generator = train_gen.flow_from_directory(
train_dir,
target_size = (150, 150),
class_mode = 'categorical',
batch_size = 5
)
Found 154 images belonging to 8 classes.
In [76]:
def get_model():
model = models.Sequential()
model.add(layers.Conv2D(128, (3, 3), activation = 'relu', input_shape = (150, 150, 3)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(128, (3, 3), activation = 'relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation = 'relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation = 'relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(32, (3, 3), activation = 'relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Flatten())
model.add(layers.Dense(256, activation = 'relu'))
model.add(layers.Dense(8, activation = 'softmax'))
model.compile(
optimizer = optimizers.RMSprop(learning_rate = 1e-4),
loss = 'categorical_crossentropy',
metrics = ['acc']
)
return model
In [77]:
model = get_model()
In [78]:
model.summary()
Model: "sequential_4"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
conv2d_20 (Conv2D) (None, 148, 148, 128) 3584
max_pooling2d_20 (MaxPoolin (None, 74, 74, 128) 0
g2D)
conv2d_21 (Conv2D) (None, 72, 72, 128) 147584
max_pooling2d_21 (MaxPoolin (None, 36, 36, 128) 0
g2D)
conv2d_22 (Conv2D) (None, 34, 34, 64) 73792
max_pooling2d_22 (MaxPoolin (None, 17, 17, 64) 0
g2D)
conv2d_23 (Conv2D) (None, 15, 15, 64) 36928
max_pooling2d_23 (MaxPoolin (None, 7, 7, 64) 0
g2D)
conv2d_24 (Conv2D) (None, 5, 5, 32) 18464
max_pooling2d_24 (MaxPoolin (None, 2, 2, 32) 0
g2D)
flatten_4 (Flatten) (None, 128) 0
dense_8 (Dense) (None, 256) 33024
dense_9 (Dense) (None, 8) 2056
=================================================================
Total params: 315,432
Trainable params: 315,432
Non-trainable params: 0
_________________________________________________________________
In [79]:
history = model.fit(
train_generator,
steps_per_epoch = 30,
epochs = 100
)
Epoch 1/100 30/30 [==============================] - 9s 242ms/step - loss: 2.0687 - acc: 0.1611 Epoch 2/100 30/30 [==============================] - 7s 235ms/step - loss: 2.0297 - acc: 0.1879 Epoch 3/100 30/30 [==============================] - 9s 283ms/step - loss: 2.0079 - acc: 0.1745 Epoch 4/100 30/30 [==============================] - 8s 258ms/step - loss: 1.9270 - acc: 0.2148 Epoch 5/100 30/30 [==============================] - 10s 320ms/step - loss: 1.8420 - acc: 0.2550 Epoch 6/100 30/30 [==============================] - 8s 259ms/step - loss: 1.7358 - acc: 0.3067 Epoch 7/100 30/30 [==============================] - 13s 423ms/step - loss: 1.6443 - acc: 0.3624 Epoch 8/100 30/30 [==============================] - 14s 445ms/step - loss: 1.5818 - acc: 0.4295 Epoch 9/100 30/30 [==============================] - 8s 280ms/step - loss: 1.5075 - acc: 0.4094 Epoch 10/100 30/30 [==============================] - 9s 305ms/step - loss: 1.4799 - acc: 0.4362 Epoch 11/100 30/30 [==============================] - 13s 438ms/step - loss: 1.4278 - acc: 0.4698 Epoch 12/100 30/30 [==============================] - 12s 374ms/step - loss: 1.2964 - acc: 0.4765 Epoch 13/100 30/30 [==============================] - 11s 374ms/step - loss: 1.2175 - acc: 0.5638 Epoch 14/100 30/30 [==============================] - 10s 322ms/step - loss: 1.2325 - acc: 0.5839 Epoch 15/100 30/30 [==============================] - 12s 381ms/step - loss: 1.2038 - acc: 0.5705 Epoch 16/100 30/30 [==============================] - 10s 335ms/step - loss: 1.1544 - acc: 0.5839 Epoch 17/100 30/30 [==============================] - 9s 310ms/step - loss: 1.1436 - acc: 0.5772 Epoch 18/100 30/30 [==============================] - 8s 271ms/step - loss: 1.1608 - acc: 0.6174 Epoch 19/100 30/30 [==============================] - 8s 259ms/step - loss: 1.1298 - acc: 0.5638 Epoch 20/100 30/30 [==============================] - 8s 277ms/step - loss: 1.0937 - acc: 0.6242 Epoch 21/100 30/30 [==============================] - 8s 266ms/step - loss: 1.0408 - acc: 0.6242 Epoch 22/100 30/30 [==============================] - 9s 303ms/step - loss: 0.9664 - acc: 0.5705 Epoch 23/100 30/30 [==============================] - 12s 392ms/step - loss: 0.9389 - acc: 0.6846 Epoch 24/100 30/30 [==============================] - 11s 346ms/step - loss: 0.9304 - acc: 0.6443 Epoch 25/100 30/30 [==============================] - 10s 342ms/step - loss: 0.9620 - acc: 0.5839 Epoch 26/100 30/30 [==============================] - 9s 287ms/step - loss: 0.9381 - acc: 0.6107 Epoch 27/100 30/30 [==============================] - 10s 327ms/step - loss: 0.8789 - acc: 0.7000 Epoch 28/100 30/30 [==============================] - 10s 341ms/step - loss: 0.9407 - acc: 0.6443 Epoch 29/100 30/30 [==============================] - 9s 308ms/step - loss: 0.8713 - acc: 0.6667 Epoch 30/100 30/30 [==============================] - 9s 291ms/step - loss: 0.8415 - acc: 0.7181 Epoch 31/100 30/30 [==============================] - 9s 294ms/step - loss: 0.9467 - acc: 0.6577 Epoch 32/100 30/30 [==============================] - 10s 343ms/step - loss: 0.8096 - acc: 0.7181 Epoch 33/100 30/30 [==============================] - 10s 337ms/step - loss: 0.8490 - acc: 0.6711 Epoch 34/100 30/30 [==============================] - 9s 294ms/step - loss: 0.8665 - acc: 0.6711 Epoch 35/100 30/30 [==============================] - 9s 303ms/step - loss: 0.7672 - acc: 0.7248 Epoch 36/100 30/30 [==============================] - 10s 321ms/step - loss: 0.8877 - acc: 0.6577 Epoch 37/100 30/30 [==============================] - 13s 425ms/step - loss: 0.7658 - acc: 0.7047 Epoch 38/100 30/30 [==============================] - 10s 335ms/step - loss: 0.8228 - acc: 0.6980 Epoch 39/100 30/30 [==============================] - 8s 267ms/step - loss: 0.8238 - acc: 0.6913 Epoch 40/100 30/30 [==============================] - 8s 280ms/step - loss: 0.6601 - acc: 0.7584 Epoch 41/100 30/30 [==============================] - 8s 275ms/step - loss: 0.7638 - acc: 0.7383 Epoch 42/100 30/30 [==============================] - 8s 257ms/step - loss: 0.7328 - acc: 0.7248 Epoch 43/100 30/30 [==============================] - 8s 278ms/step - loss: 0.6620 - acc: 0.7517 Epoch 44/100 30/30 [==============================] - 8s 277ms/step - loss: 0.7173 - acc: 0.7383 Epoch 45/100 30/30 [==============================] - 8s 276ms/step - loss: 0.7026 - acc: 0.7315 Epoch 46/100 30/30 [==============================] - 8s 262ms/step - loss: 0.6596 - acc: 0.7584 Epoch 47/100 30/30 [==============================] - 8s 267ms/step - loss: 0.6460 - acc: 0.7517 Epoch 48/100 30/30 [==============================] - 9s 291ms/step - loss: 0.5890 - acc: 0.8121 Epoch 49/100 30/30 [==============================] - 8s 257ms/step - loss: 0.5630 - acc: 0.7852 Epoch 50/100 30/30 [==============================] - 8s 264ms/step - loss: 0.6268 - acc: 0.7651 Epoch 51/100 30/30 [==============================] - 8s 273ms/step - loss: 0.6473 - acc: 0.7114 Epoch 52/100 30/30 [==============================] - 8s 273ms/step - loss: 0.5827 - acc: 0.7852 Epoch 53/100 30/30 [==============================] - 8s 255ms/step - loss: 0.6105 - acc: 0.7383 Epoch 54/100 30/30 [==============================] - 8s 263ms/step - loss: 0.6038 - acc: 0.7718 Epoch 55/100 30/30 [==============================] - 8s 265ms/step - loss: 0.5502 - acc: 0.7852 Epoch 56/100 30/30 [==============================] - 8s 259ms/step - loss: 0.5733 - acc: 0.7919 Epoch 57/100 30/30 [==============================] - 8s 267ms/step - loss: 0.5517 - acc: 0.7651 Epoch 58/100 30/30 [==============================] - 11s 383ms/step - loss: 0.5704 - acc: 0.7919 Epoch 59/100 30/30 [==============================] - 7s 245ms/step - loss: 0.5925 - acc: 0.7584 Epoch 60/100 30/30 [==============================] - 7s 234ms/step - loss: 0.4843 - acc: 0.8255 Epoch 61/100 30/30 [==============================] - 8s 269ms/step - loss: 0.5503 - acc: 0.7718 Epoch 62/100 30/30 [==============================] - 7s 227ms/step - loss: 0.4721 - acc: 0.8389 Epoch 63/100 30/30 [==============================] - 8s 247ms/step - loss: 0.5040 - acc: 0.7987 Epoch 64/100 30/30 [==============================] - 7s 231ms/step - loss: 0.4861 - acc: 0.8121 Epoch 65/100 30/30 [==============================] - 7s 238ms/step - loss: 0.4515 - acc: 0.8333 Epoch 66/100 30/30 [==============================] - 9s 302ms/step - loss: 0.4799 - acc: 0.8188 Epoch 67/100 30/30 [==============================] - 7s 228ms/step - loss: 0.5033 - acc: 0.8054 Epoch 68/100 30/30 [==============================] - 7s 243ms/step - loss: 0.4359 - acc: 0.8389 Epoch 69/100 30/30 [==============================] - 8s 247ms/step - loss: 0.3684 - acc: 0.8658 Epoch 70/100 30/30 [==============================] - 7s 238ms/step - loss: 0.4671 - acc: 0.8322 Epoch 71/100 30/30 [==============================] - 7s 235ms/step - loss: 0.5629 - acc: 0.7987 Epoch 72/100 30/30 [==============================] - 7s 237ms/step - loss: 0.3724 - acc: 0.8725 Epoch 73/100 30/30 [==============================] - 7s 245ms/step - loss: 0.3949 - acc: 0.8322 Epoch 74/100 30/30 [==============================] - 7s 243ms/step - loss: 0.4260 - acc: 0.8188 Epoch 75/100 30/30 [==============================] - 7s 237ms/step - loss: 0.3571 - acc: 0.8658 Epoch 76/100 30/30 [==============================] - 7s 244ms/step - loss: 0.5687 - acc: 0.8188 Epoch 77/100 30/30 [==============================] - 7s 240ms/step - loss: 0.4385 - acc: 0.8255 Epoch 78/100 30/30 [==============================] - 7s 234ms/step - loss: 0.4627 - acc: 0.8591 Epoch 79/100 30/30 [==============================] - 7s 233ms/step - loss: 0.3835 - acc: 0.8658 Epoch 80/100 30/30 [==============================] - 8s 242ms/step - loss: 0.4635 - acc: 0.8054 Epoch 81/100 30/30 [==============================] - 7s 236ms/step - loss: 0.3169 - acc: 0.8926 Epoch 82/100 30/30 [==============================] - 7s 223ms/step - loss: 0.3574 - acc: 0.8658 Epoch 83/100 30/30 [==============================] - 8s 248ms/step - loss: 0.4219 - acc: 0.8389 Epoch 84/100 30/30 [==============================] - 7s 236ms/step - loss: 0.3595 - acc: 0.8859 Epoch 85/100 30/30 [==============================] - 7s 229ms/step - loss: 0.3303 - acc: 0.8859 Epoch 86/100 30/30 [==============================] - 7s 239ms/step - loss: 0.4232 - acc: 0.8658 Epoch 87/100 30/30 [==============================] - 7s 232ms/step - loss: 0.4311 - acc: 0.8389 Epoch 88/100 30/30 [==============================] - 7s 239ms/step - loss: 0.5204 - acc: 0.8389 Epoch 89/100 30/30 [==============================] - 7s 232ms/step - loss: 0.3039 - acc: 0.8792 Epoch 90/100 30/30 [==============================] - 7s 244ms/step - loss: 0.3651 - acc: 0.8322 Epoch 91/100 30/30 [==============================] - 7s 241ms/step - loss: 0.3641 - acc: 0.8591 Epoch 92/100 30/30 [==============================] - 7s 234ms/step - loss: 0.3859 - acc: 0.8792 Epoch 93/100 30/30 [==============================] - 7s 239ms/step - loss: 0.4065 - acc: 0.8792 Epoch 94/100 30/30 [==============================] - 8s 263ms/step - loss: 0.3182 - acc: 0.8725 Epoch 95/100 30/30 [==============================] - 7s 234ms/step - loss: 0.3195 - acc: 0.8926 Epoch 96/100 30/30 [==============================] - 7s 237ms/step - loss: 0.3600 - acc: 0.8523 Epoch 97/100 30/30 [==============================] - 7s 245ms/step - loss: 0.2322 - acc: 0.9128 Epoch 98/100 30/30 [==============================] - 10s 318ms/step - loss: 0.3736 - acc: 0.8859 Epoch 99/100 30/30 [==============================] - 7s 249ms/step - loss: 0.3932 - acc: 0.8993 Epoch 100/100 30/30 [==============================] - 331s 11s/step - loss: 0.3112 - acc: 0.8658
In [81]:
class_map = train_generator.class_indices
In [82]:
inv_class_map = {}
In [83]:
for i, j in class_map.items():
inv_class_map[j] = i
In [84]:
test_dir = os.path.join(dataset_dir, 'test')
In [85]:
import os
class_test_dir = os.listdir(test_dir)
import keras.utils as image
import numpy as np
import matplotlib.pyplot as plt
In [94]:
for cl in class_test_dir:
class_test_path = os.path.join(test_dir, cl)
if cl=='.DS_Store':
continue
for i in os.listdir(class_test_path):
if i=='.DS_Store':
continue
img_path = os.path.join(class_test_path, i)
img = image.load_img(img_path, target_size= (150, 150))
img_tensor = image.img_to_array(img)
img_tensor = np.expand_dims(img_tensor, axis = 0)
img_tensor /= 255
plt.imshow(img_tensor[0])
plt.show()
pred = np.argmax(model.predict(img_tensor))
class_pred = inv_class_map[pred]
print(f"[*] Predicted Class :: {class_pred} <-> Actual class :: {cl}")
1/1 [==============================] - 0s 34ms/step [*] Predicted Class :: rental <-> Actual class :: rental
1/1 [==============================] - 0s 50ms/step [*] Predicted Class :: Military <-> Actual class :: rental
1/1 [==============================] - 0s 46ms/step [*] Predicted Class :: rental <-> Actual class :: rental
1/1 [==============================] - 0s 50ms/step [*] Predicted Class :: rental <-> Actual class :: rental
1/1 [==============================] - 0s 57ms/step [*] Predicted Class :: rental <-> Actual class :: rental
1/1 [==============================] - 0s 49ms/step [*] Predicted Class :: Military <-> Actual class :: Military
1/1 [==============================] - 0s 36ms/step [*] Predicted Class :: Military <-> Actual class :: Military
1/1 [==============================] - 0s 38ms/step [*] Predicted Class :: Military <-> Actual class :: Military
1/1 [==============================] - 0s 37ms/step [*] Predicted Class :: Military <-> Actual class :: Military
1/1 [==============================] - 0s 33ms/step [*] Predicted Class :: Military <-> Actual class :: Military
1/1 [==============================] - 0s 39ms/step [*] Predicted Class :: commercial <-> Actual class :: commercial
1/1 [==============================] - 0s 57ms/step [*] Predicted Class :: commercial <-> Actual class :: commercial
1/1 [==============================] - 0s 41ms/step [*] Predicted Class :: commercial <-> Actual class :: commercial
1/1 [==============================] - 0s 47ms/step [*] Predicted Class :: commercial <-> Actual class :: commercial
1/1 [==============================] - 0s 39ms/step [*] Predicted Class :: rental <-> Actual class :: commercial
1/1 [==============================] - 0s 39ms/step [*] Predicted Class :: foregin <-> Actual class :: foregin
1/1 [==============================] - 0s 34ms/step [*] Predicted Class :: foregin <-> Actual class :: foregin
1/1 [==============================] - 0s 38ms/step [*] Predicted Class :: foregin <-> Actual class :: foregin
1/1 [==============================] - 0s 42ms/step [*] Predicted Class :: foregin <-> Actual class :: foregin
1/1 [==============================] - 0s 44ms/step [*] Predicted Class :: foregin <-> Actual class :: foregin
1/1 [==============================] - 0s 35ms/step [*] Predicted Class :: Military <-> Actual class :: common
1/1 [==============================] - 0s 48ms/step [*] Predicted Class :: common <-> Actual class :: common
1/1 [==============================] - 0s 43ms/step [*] Predicted Class :: foregin <-> Actual class :: common
1/1 [==============================] - 0s 45ms/step [*] Predicted Class :: foregin <-> Actual class :: common
1/1 [==============================] - 0s 34ms/step [*] Predicted Class :: common <-> Actual class :: common
1/1 [==============================] - 0s 45ms/step [*] Predicted Class :: temporary <-> Actual class :: temporary
1/1 [==============================] - 0s 39ms/step [*] Predicted Class :: temporary <-> Actual class :: temporary
1/1 [==============================] - 0s 36ms/step [*] Predicted Class :: temporary <-> Actual class :: temporary
1/1 [==============================] - 0s 35ms/step [*] Predicted Class :: temporary <-> Actual class :: temporary
1/1 [==============================] - 0s 34ms/step [*] Predicted Class :: temporary <-> Actual class :: temporary
1/1 [==============================] - 0s 32ms/step [*] Predicted Class :: electric <-> Actual class :: electric
1/1 [==============================] - 0s 34ms/step [*] Predicted Class :: electric <-> Actual class :: electric
1/1 [==============================] - 0s 78ms/step [*] Predicted Class :: electric <-> Actual class :: electric
1/1 [==============================] - 0s 34ms/step [*] Predicted Class :: electric <-> Actual class :: electric
1/1 [==============================] - 0s 36ms/step [*] Predicted Class :: electric <-> Actual class :: electric
1/1 [==============================] - 0s 38ms/step [*] Predicted Class :: PresidentOfIndia <-> Actual class :: PresidentOfIndia
1/1 [==============================] - 0s 36ms/step [*] Predicted Class :: temporary <-> Actual class :: PresidentOfIndia
1/1 [==============================] - 0s 38ms/step [*] Predicted Class :: PresidentOfIndia <-> Actual class :: PresidentOfIndia
1/1 [==============================] - 0s 34ms/step [*] Predicted Class :: temporary <-> Actual class :: PresidentOfIndia
1/1 [==============================] - 0s 38ms/step [*] Predicted Class :: temporary <-> Actual class :: PresidentOfIndia
In [102]:
correct_count = 0
total_count = 0
tp = {}
fp = {}
fn = {}
tn = {}
precision_dict = {}
recall_dict = {}
for cl in class_test_dir:
tp[cl] = 0
fp[cl] = 0
fn[cl] = 0
tn[cl] = 0
precision_dict[cl] = 0
recall_dict[cl] = 0
for cl in class_test_dir:
class_test_path = os.path.join(test_dir, cl)
if cl == ".DS_Store":
continue
for i in os.listdir(class_test_path):
if i == ".DS_Store":
continue
img_path = os.path.join(class_test_path, i)
img = image.load_img(img_path, target_size= (150, 150))
img_tensor = image.img_to_array(img)
img_tensor = np.expand_dims(img_tensor, axis = 0)
img_tensor /= 255
plt.imshow(img_tensor[0])
plt.show()
pred = np.argmax(model.predict(img_tensor))
total_count += 1
class_pred = inv_class_map[pred]
if class_pred == cl:
tp[cl] += 1
correct_count += 1
else:
fp[class_pred] += 1
fn[cl] += 1
print(f"[*] Predicted Class :: {class_pred} <-> Actual class :: {cl}")
1/1 [==============================] - 0s 43ms/step [*] Predicted Class :: rental <-> Actual class :: rental
1/1 [==============================] - 0s 40ms/step [*] Predicted Class :: Military <-> Actual class :: rental
1/1 [==============================] - 0s 35ms/step [*] Predicted Class :: rental <-> Actual class :: rental
1/1 [==============================] - 0s 40ms/step [*] Predicted Class :: rental <-> Actual class :: rental
1/1 [==============================] - 0s 44ms/step [*] Predicted Class :: rental <-> Actual class :: rental
1/1 [==============================] - 0s 34ms/step [*] Predicted Class :: Military <-> Actual class :: Military
1/1 [==============================] - 0s 40ms/step [*] Predicted Class :: Military <-> Actual class :: Military
1/1 [==============================] - 0s 61ms/step [*] Predicted Class :: Military <-> Actual class :: Military
1/1 [==============================] - 0s 41ms/step [*] Predicted Class :: Military <-> Actual class :: Military
1/1 [==============================] - 0s 34ms/step [*] Predicted Class :: Military <-> Actual class :: Military
1/1 [==============================] - 0s 35ms/step [*] Predicted Class :: commercial <-> Actual class :: commercial
1/1 [==============================] - 0s 32ms/step [*] Predicted Class :: commercial <-> Actual class :: commercial
1/1 [==============================] - 0s 36ms/step [*] Predicted Class :: commercial <-> Actual class :: commercial
1/1 [==============================] - 0s 36ms/step [*] Predicted Class :: commercial <-> Actual class :: commercial
1/1 [==============================] - 0s 35ms/step [*] Predicted Class :: rental <-> Actual class :: commercial
1/1 [==============================] - 0s 35ms/step [*] Predicted Class :: foregin <-> Actual class :: foregin
1/1 [==============================] - 0s 37ms/step [*] Predicted Class :: foregin <-> Actual class :: foregin
1/1 [==============================] - 0s 38ms/step [*] Predicted Class :: foregin <-> Actual class :: foregin
1/1 [==============================] - 0s 46ms/step [*] Predicted Class :: foregin <-> Actual class :: foregin
1/1 [==============================] - 0s 42ms/step [*] Predicted Class :: foregin <-> Actual class :: foregin
1/1 [==============================] - 0s 36ms/step [*] Predicted Class :: Military <-> Actual class :: common
1/1 [==============================] - 0s 39ms/step [*] Predicted Class :: common <-> Actual class :: common
1/1 [==============================] - 0s 34ms/step [*] Predicted Class :: foregin <-> Actual class :: common
1/1 [==============================] - 0s 49ms/step [*] Predicted Class :: foregin <-> Actual class :: common
1/1 [==============================] - 0s 34ms/step [*] Predicted Class :: common <-> Actual class :: common
1/1 [==============================] - 0s 34ms/step [*] Predicted Class :: temporary <-> Actual class :: temporary
1/1 [==============================] - 0s 36ms/step [*] Predicted Class :: temporary <-> Actual class :: temporary
1/1 [==============================] - 0s 35ms/step [*] Predicted Class :: temporary <-> Actual class :: temporary
1/1 [==============================] - 0s 33ms/step [*] Predicted Class :: temporary <-> Actual class :: temporary
1/1 [==============================] - 0s 35ms/step [*] Predicted Class :: temporary <-> Actual class :: temporary
1/1 [==============================] - 0s 35ms/step [*] Predicted Class :: electric <-> Actual class :: electric
1/1 [==============================] - 0s 36ms/step [*] Predicted Class :: electric <-> Actual class :: electric
1/1 [==============================] - 0s 34ms/step [*] Predicted Class :: electric <-> Actual class :: electric
1/1 [==============================] - 0s 30ms/step [*] Predicted Class :: electric <-> Actual class :: electric
1/1 [==============================] - 0s 35ms/step [*] Predicted Class :: electric <-> Actual class :: electric
1/1 [==============================] - 0s 34ms/step [*] Predicted Class :: PresidentOfIndia <-> Actual class :: PresidentOfIndia
1/1 [==============================] - 0s 34ms/step [*] Predicted Class :: temporary <-> Actual class :: PresidentOfIndia
1/1 [==============================] - 0s 34ms/step [*] Predicted Class :: PresidentOfIndia <-> Actual class :: PresidentOfIndia
1/1 [==============================] - 0s 42ms/step [*] Predicted Class :: temporary <-> Actual class :: PresidentOfIndia
1/1 [==============================] - 0s 43ms/step [*] Predicted Class :: temporary <-> Actual class :: PresidentOfIndia
In [105]:
accuracy = correct_count / total_count
print(accuracy)
0.8
In [100]:
precision_macro_avg = sum(precision_dict.values()) / total_count
recall_macro_avg = sum(recall_dict.values()) / total_count
print(precision_macro_avg)
print(recall_macro_avg)
0.02 0.02
In [101]:
f1_score = 2 * precision_macro_avg * recall_macro_avg / (precision_macro_avg + recall_macro_avg)
print(f1_score)
0.02